package com.ruoyi.project.system.service;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SmPay;
import com.ruoyi.project.system.domain.SmQuery;
import com.ruoyi.project.system.domain.vo.PayVo;

import java.io.IOException;
import java.util.List;

/**
 * 支付Service接口
 */
public interface ISmPayService {

    JSONObject zhifuFM(SmPay sm, String path) throws IOException;

    AjaxResult upgradePay(SmPay smPay);

    /**
     * 计算推广收益
     * @param smPay
     * @param productId
     * @param roleId
     */
    void calculatePromotionIncome(SmPay smPay, Integer productId, Integer roleId);

    /**
     * 计算自查收益 / 通用收益
     * @param smPay
     * @param productId
     * @param roleId
     */
    void calculateCommonIncome(SmPay smPay, Integer productId, Integer roleId);

    /**
     * 计算升级收益
     * @param smPay
     */
    void calculateUpgradeIncome(SmPay smPay);

    void paySuccessUpgradeSetUser(SmPay smPay);

    /**
     * 查询支付
     *
     * @param id 支付主键
     * @return 支付
     */
    SmPay selectSmPayById(Integer id);

    /**
     * 查询支付列表
     *
     * @param payVo 支付
     * @return 支付集合
     */
    List<PayVo> selectSmPayList(PayVo payVo);

    /**
     * 新增支付
     *
     * @param smPay 支付
     * @return 结果
     */
    int insertSmPay(SmPay smPay);

    /**
     * 修改支付
     *
     * @param smPay 支付
     * @return 结果
     */
    int updateSmPay(SmPay smPay);

    /**
     * 批量删除支付
     *
     * @param ids 需要删除的支付主键集合
     * @return 结果
     */
    public int deleteSmPayByIds(Integer[] ids);

}
